From: Florian Müllner Date: Wed, 3 Jul 2013 13:55:35 +0000 (+0200) Subject: panelMenu: Close menu when hiding the corresponding button X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~3958 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=dabcd29fb6583746425f7ee1ce7c06adcb9ff421;p=gnome-shell.git panelMenu: Close menu when hiding the corresponding button A PanelMenuButton added to the top bar might not be visible at all times. If it is hidden while the corresponding menu is open, we currently don't do anything at all, e.g. the menu remains open pointing to an arbitrary location in the top bar. Instead, close the menu automatically in that case. https://bugzilla.gnome.org/show_bug.cgi?id=703540 --- diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js index b73152eb0..d77143b17 100644 --- a/js/ui/panelMenu.js +++ b/js/ui/panelMenu.js @@ -110,6 +110,7 @@ const Button = new Lang.Class({ this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress)); this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress)); + this.actor.connect('notify::visible', Lang.bind(this, this._onVisibilityChanged)); if (dontCreateMenu) this.menu = new PopupMenu.PopupDummyMenu(this.actor); @@ -183,6 +184,14 @@ const Button = new Lang.Class({ return false; }, + _onVisibilityChanged: function() { + if (!this.menu) + return; + + if (!this.actor.visible) + this.menu.close(); + }, + _onMenuKeyPress: function(actor, event) { if (global.focus_manager.navigate_from_event(event)) return true;